/*
 * @(#)CommAction.java $version 2012-8-9
 * 
 * Copyright 2012 NADOSTAR Gruop. All rights Reserved.
 * NADOSTAR PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.nadostar.iims.etc.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.nadostar.extensions.CommonUtil;
import com.nadostar.extensions.pagination.PaginationInfo;
import com.nadostar.extensions.util.DataMap;
import com.nadostar.iims.etc.bo.CommBO;

/**
 * The Class CommAction.
 * 
 * @author Lixing
 *
 */
@Controller
@RequestMapping("/etc/common")
public class CommAction {
	/** The log. */
	private static Log log = LogFactory.getLog(CommAction.class);
	
	private static PaginationInfo paginate = null;
	
	/** The CommBO instance. */
	@Autowired
	private CommBO commBO = null;
	
	@ModelAttribute
	public void modelPaginateAttr(HttpServletRequest request) {
		if(paginate == null) {
			paginate = new PaginationInfo("default", request, 0);
		}
	}
	
	@ModelAttribute
	public void modelCommCdCatListAttr(Model model) {
		log.debug("### CommAction.categoryListAttr");
		model.addAttribute("commCdCatList", commBO.getAllCommCdCatList());
	}
	
	@RequestMapping(method = RequestMethod.GET)
	public String execute() {
		return "etc/commonList";
	}
	
	@RequestMapping(value = "/search", method = RequestMethod.GET)
	public @ResponseBody Map<String, ? extends Object> search(
			@RequestParam("page") int page,
			@RequestParam("commCdCatCd") String commCdCatCd) {
		Map<String, Object> jsonMap = new HashMap<String, Object>();
		
		int total = commBO.getCommListCount(commCdCatCd);
		paginate.setPage(page);
		paginate.setTotalRows(total);
		int offset = CommonUtil.calcOffset(page, paginate.getPageSize());
		
		List<DataMap> commList = commBO.getCommList(commCdCatCd, offset, paginate.getPageSize());
		
		jsonMap.put("total", total);
		jsonMap.put("paginate", paginate.getPaginateMap());
		jsonMap.put("commList", commList);
		return jsonMap;
	}
}
